/*
 * Copyright 2008 Max Kugland
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.splink.library.tween.sprop {
	import flash.media.SoundChannel;
	import flash.media.SoundTransform;

	/**
	 * Enables the tweening of a <code>SoundChannel</code>'s <code>SoundTransform</code> properties
	 * 
	 * @author Max Kugland
	 */
	public class SoundTransformProp implements ISpecialProp {
		public static const VOLUME : String = "volume";
		public static const PAN : String = "pan";

		private var _channel : SoundChannel;

		/**
		 * @param channel the <code>SoundChannel</code> whose <code>SoundTransform</code> properties should change
		 */
		public function SoundTransformProp(channel : SoundChannel) {
			_channel = channel;
		}

		/**
		 * @inheritDoc
		 */
		public function apply(target : Object, prop : String, start : Number, end : Number, value : Number, percent : Number) : void {
			if(target is SoundTransform) {
				SoundTransform(target)[prop] = value;
				_channel.soundTransform = SoundTransform(target);
			}
		}

		/**
		 * @inheritDoc
		 */
		public function getValue(prop : String) : Number {
			return _channel.soundTransform[prop];
		}
	}
}
